Notifications
Clear all

variável muda de valor no meio da macro sozinha

27 Posts
4 Usuários
0 Reactions
5,907 Visualizações
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

sei que não vão poder me ajudar muito mas queria uma explicação para isso

estava fazendo uma macro que pega valores de uma aba e cola na outra

é bem simples mas uma das variáveis que tem o papel de definir a quantidade de colunas no meio do caminho muda o valor

Sub atualiza_ultima()
With Sheets("Fixa")
For S = 1 To 5
c1 = Let_Num_Col(.Cells(14, S).Value2)

Cq = .Cells(20, S).Value2    'Pega tamanho da range "quantidade de colunas

L = .Cells(Rows.Count, c1).End(xlUp).row
l1 = (S * 5) + (3 - S)
c2 = 3

MsgBox Cq '<<Valor correto

Range(Cells(l1, c2), Cells(l1, c2 + 1)).Value2 = .Range(.Cells(L, c1), .Cells(L, c1 + 1)).Value2
c2 = c2 + 2
c1 = c1 + 3

MsgBox Cq ' Valor mudou ????

Range(Cells(l1, c2), Cells(l1, c2 + Cq)).Value2 = .Range(.Cells(L, c1), .Cells(L, c1 + Cq)).Value2
Next
End With
End Sub

MsgBox Cq '<<Valor correto
Range(Cells(l1, c2), Cells(l1, c2 + 1)).Value2 = .Range(.Cells(L, c1), .Cells(L, c1 + 1)).Value2 <<<"Sem essa linha o valor de Cq não muda , muda na proxima mas seu valor correto é novamente redefinido no inicio da macro oq nela faz a variavel mudar?"
c2 = c2 + 2
c1 = c1 + 3
MsgBox Cq ' Valor mudou ????

se eu mudar o nome da variavel funciona normal
lembrando que não é uma variavel Const
Public Cq As Long

eu a uso em outras macros perfeitamente para a mesma função
mas pq ela está mudando de valor no meio do caminho, onde foi que eu errei???

mais um detalhe ...
essa macro está em uma das folhas e não em um modulo
todas as outras macros estão em modulos

 
Postado : 07/12/2014 6:31 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

bem pode ser algum residuo de memoria tbm
já que variaveis publicas e locais tem endereçamento diferente
na definição de valor da variavel o vba assume como local,
e na outra na mudança de aba dentro de with usa a publica

tive outros fatos estranhos no uso de variaveis
alguns até seriam uteis
mas como não são de comportamento estavel não dá para usar

 
Postado : 10/04/2015 2:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu sugiro que vc pare de usar variaveis publicas....

Só estão causando problemas estranhos e levando vc a perder a cabeça... use locais onde temq ser locais, use variaveis d emodulo onde elas tem q ser de módulo...
nesses anos todos, eu nunca tive uma variavel trocando de valor assim a esmo....

e me arrisco a dizer, essa pode ser uma das razões.... qdo vc aprender a usar adequadamente as variáveis, eu juro pra vc que isso nunca mais vai acontecer... e digo mais, seu scódigos podem continuar sendo complicados, sem declaração de variáveis, sem comentários, com nomes estranhos, super confuso (pra mim), claro q pode, mas se mudar a forma como lida com as variaveis, seus problemas sumirão. Isso é uma promessa.

 
Postado : 10/04/2015 6:30 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

eu tive problemas com nomes de funções tbm

eu tinha feito uma macro com referencias que com alguns valores ia tudo bem, mas com outros ...
não era nome curto, não tinha nome de variaveis publicas nela nem nada
eu usei o nome que já era usada por uma função
e essa função trabalhava apenas com certos valores
mas como não dava erros eu pesava que tinha errado em algo "alem do nome"

nesse caso não tem oq fazer, é trocar o nome mesmo

vamos fazer o seguinte,
assim vc não fica se estressando a toa
vc me contrata para sua empresa,
aí eu vou fazer as macros do jeito que vc quiser " mas não vou poder garantir a mesma eficiência nem rapidez na implementação (afinal vou estar em fase de readaptação)"

mas pode ficar ciente que eu tenho ótima capacidade de analise e capacidade e visualizar um contexto futuro e ter ideias( uteis ) "infelizmente não posso falar o mesmo da implementação"
e somente vou desistir de fazer algo depois que conseguir fazer ou ficar provado de que não é possivel.

No momento vba e excel é um aprendizado e um hobby sem consequências "não existe ferramentas afiadas e perigosas "fisicamente",
pode ficar tranquilo que não vou usar no contexto profissional nem mesmo para controlar minhas contas.

 
Postado : 12/04/2015 8:50 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Desculpe me intrometer...

Ed, vc pode não concordar com certas coisas. Porém, se vc diz que vba é um aprendizado e um hobby, porque você resiste em tentar aprender do jeito "certo"?

Eu lembro que te falei uma vez, logo que vc chegou ao fórum, que podemos não ter explicação pra tudo, mas, por experiência com problemas semelhantes a este que vc está relatando, decidimos mudar a forma de escrever códigos.

Eu já esquentei a cabeça com problemas semelhantes ao que vc relatou aqui. Depois vi que era eu quem estava causando o problema.

Resumindo - "cabeça quente" é que o faz as pessoas criarem as "boas práticas" de programação.

Você diz que procura aprender tudo de forma prática, mas nem tudo é prática. Talvez investir um pouco de tempo em lógica de programação seja útil.

Todos fazem desse jeito por uma razão, ignorar vai ter as consequências, no caso - cabeça quente.

De qualquer modo, é uma opinião, mas não vou ficar tentando te convencer, senão eu é que vou contra as boas práticas, esquentando a minha cabeça, rs.

Abs

 
Postado : 12/04/2015 11:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

vc me contrata para sua empresa,

kkkkkk boa !!!

Mas desculpa, nào sou eu quem contrata, na minha empresa...

 
Postado : 12/04/2015 1:41 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

por estar em um forum é publico e qualquer um pode se intrometer entendendo ou não do assunto

gtsalikis
(texto muito grande, leia somente o final)
vc mesmo comentou que usava em certa situação pq não sabia como fazer de outro jeito
bem, a unica diferença é que vc pode saber como fazer oq eu quero fazer sem usar, e eu não sei

eu até posso procurar outro jeito de fazer e complicar as macros para o meu entendimento
mas por ser apenas um hobby e estar funcionando do jeito que eu quero, não vejo pq complicar
já tive varios problemas e não apenas com variaveis, e em tudo eu que estava errando, mas pq não sabia usar tal método ou função

os problemas não são gerados apenas por variaveis publicas
um simples valor diferente, um sinal de menos em vez de + , um nome duplicado, faltou uma expressão.
pq tal coisa não funciona ou pq tal coisa dá erro ?

logica é um conceito amplo
existe logicas finitas e outras dependentes

tipo, um veneno
normalmente mata,
só pq meu vizinho não morreu, eu que não vou experimentar,
algumas pessoas podem até morrer com certos alimentos ditos comuns,
mas eu vou deixar de comer amendoim, pão, camarão, queijo... coisas que eu sempre comi e como só pq tem gente que fala que faz mal ?

andar de moto é perigoso, vc deixa de andar por causa disso?
mas claro que vc presta atenção no quesito segurança para minimizar os riscos

Tipo com o transito hoje em dia, andar de onibus e carro é mais seguro,
vc não tem um carro e muito menos um onibus, e alem disso quer chegar rapido
vai deixar de usar a moto que vc tem e sabe usar até conseguir aprender a dirigir um carro ou um onibus ?

existe varios outros exemplos dentro do conceito de excel e macros.

No meu caso, o uso de variaveis publicas não envolvem nenhum risco fisico, de perder o emprego "caso o fernando me contrate" , ou de ter prejuízos por valores errados

Mas eu mesmo assim me atendo na segurança,
alem de ser para testes variados
eu crio planilhas clones e proíbo a execução das macros na aba de dados,
mas não por causa das variaveis e sim por causa das macros que podem simplesmente destruir meus dados e a maioria não usam essas variaveis.

bem, eu tbm não esquento a cabeça :D

 
Postado : 12/04/2015 1:46 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Suas variáveis podem e vão continuar mudando seus valores inexplicavelmente.
Esta é a "razão lógica", ou pelo menos uma delas, que vc tanto procura.

Mas como vc não vai mudar, acho que acabei de desistir de novo !

rsrs

 
Postado : 12/04/2015 2:41 pm
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

fernando, quando eu abri esse topico eu já tinha a solução, "trocar a variavel"
já abri planilhas aqui do forum que mexeram na minha planilha e e não tinham as tais publicas

eu tenho userform se eu não prestar atenção qual planilha está aberta vai acontecer "M"
mas isso pq não especifiquei nas macro em quais pode trabalhar ou não, eu apenas protegi minha base de dados
é algo que pode gerar desastres se não prestar atenção e totalmente proibitivo em um ambiente corporativo ou que se use planilha para algo profissional ou mesmo com dados importantes
mas se bem trabalhado pode se ter uma planilha mestre facilmente adaptavel para todos os casos

para se proibir qualquer tipo de erro então o certo seria nem usar macros em modulos, já que essas dependendo de como se escreva pode fazer oq não se quer onde não deve.

e minhas macros não pegam valores errados, esse foi um caso e eu entendi o pq "não completamente"
eu só tenho tratamento de erro em uma ou duas macros pq assim exigem nem uma das outras tem,

eu tenho erros, sim, mas por pura sicronia de macros e planilhas ,
coisa que eu não sabia era que funções personalizadas não se davam bem com colunas ocultas apesar de que com linhas ocultas funcionam sem problemas

olha, eu pretendo mudar sim
mas no momento prefiro ir avançando até poder enxergar onde quero chegar
assim desenho uma mapa detalhado e refaço o caminho "evitando" os caminhos perigosos

no momento apenas vou seguindo meu caminho...

 
Postado : 12/04/2015 3:03 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Ed, so esclarecendo:

Eu disse que uso variaveis globais para controlar eventos em formulários, porque não sei fazer isso de outra forma.

Porém, o que eu não tinha dito é que eu avaliei as formas de fazer isso, e escolhi usar variáveis globais por enterder que seria a melhor forma.

Não satisfeito, eu pesquisei, e as melhores fontes em VBA dizem para fazer dessa forma.

Ai vc vê uma diferença: eu uso, mas pesquisei para saber a melhor maneira.

O que vc deu como de exemplos de "logica muito ampla", eh a resposta típica de quem não sabe nada (ou quase nada) de lógica. Sem ofensas, cara. É que sou professor e lido com isso todo dia.

O problema é que tudo o que pensamos é um processo lógico, então, nos enganamos achando que sabemos falar sobre lógica.

A verdade, é que a lógica existe EXATAMENTE para mostrar que tudo aquilo que as pessoas consideram lógico, na verdade não tem lógica nenhuma.

 
Postado : 13/04/2015 8:20 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

A verdade, é que a lógica existe EXATAMENTE para mostrar que tudo aquilo que as pessoas consideram lógico, na verdade não tem lógica nenhuma.

A mesma questão pode ser olhada de dois pontos diferentes, certo?

 
Postado : 13/04/2015 8:45 am
(@gtsalikis)
Posts: 2373
Noble Member
 

A verdade, é que a lógica existe EXATAMENTE para mostrar que tudo aquilo que as pessoas consideram lógico, na verdade não tem lógica nenhuma.

A mesma questão pode ser olhada de dois pontos diferentes, certo?

Errado.

Mas, como disse, não vou ficar insistindo nisso.

Abs

 
Postado : 13/04/2015 9:16 am
(@edcronos)
Posts: 1006
Noble Member
Topic starter
 

ok

faço minhas as suas palavras
"tudo aquilo que "as pessoas" consideram lógico, na verdade não tem lógica nenhuma"

discutir não vai levar a nada ainda mais por algo como um "erro irracional" praticado por mim, afinal certas pessoas tem respostas corretas e racionais para cada duvida existente no mundo :?

 
Postado : 13/04/2015 9:38 am
Página 2 / 2